Previous Book Contents Book Index Next

Inside Macintosh: 3D Graphics Programming With QuickDraw 3D /
Chapter 3 - QuickDraw 3D Objects


Summary of QuickDraw 3D Objects

C Summary

Constants

System-Wide Macros

#define Q3_FOUR_CHARACTER_CONSTANT(a,b,c,d)((const unsigned long) \
                          ((const unsigned long) (a) << 24)       \
                        | ((const unsigned long) (b) << 16)       \
                        | ((const unsigned long) (c) << 8)        \
                        | ((const unsigned long) (d)))
#define Q3_OBJECT_TYPE(a,b,c,d)                                   \
                  ((TQ3ObjectType) Q3_FOUR_CHARACTER_CONSTANT(a,b,c,d))
#define Q3_METHOD_TYPE(a,b,c,d)                                   \
                  ((TQ3MethodType) Q3_FOUR_CHARACTER_CONSTANT(a,b,c,d))

Core Object Types

#define kQ3ObjectTypeElement           Q3_OBJECT_TYPE('e','l','m','n')
#define kQ3ObjectTypePick              Q3_OBJECT_TYPE('p','i','c','k')
#define kQ3ObjectTypeShared            Q3_OBJECT_TYPE('s','h','r','d')
#define kQ3ObjectTypeView              Q3_OBJECT_TYPE('v','i','e','w')
#define kQ3ObjectTypeInvalid           0

Shared Types

#define kQ3SharedTypeControllerState   Q3_OBJECT_TYPE('c','t','s','t')
#define kQ3SharedTypeDrawContext       Q3_OBJECT_TYPE('d','c','t','x')
#define kQ3SharedTypeFile              Q3_OBJECT_TYPE('f','i','l','e')
#define kQ3SharedTypeReference         Q3_OBJECT_TYPE('r','f','r','n')
#define kQ3SharedTypeRenderer          Q3_OBJECT_TYPE('r','d','d','r')
#define kQ3SharedTypeSet               Q3_OBJECT_TYPE('s','e','t',' ')
#define kQ3SharedTypeShape             Q3_OBJECT_TYPE('s','h','a','p')
#define kQ3SharedTypeShapePart         Q3_OBJECT_TYPE('s','p','r','t')
#define kQ3SharedTypeStorage           Q3_OBJECT_TYPE('s','t','r','g')
#define kQ3SharedTypeString            Q3_OBJECT_TYPE('s','t','r','n')
#define kQ3SharedTypeTexture           Q3_OBJECT_TYPE('t','x','t','r')
#define kQ3SharedTypeTracker           Q3_OBJECT_TYPE('t','r','k','r')
#define kQ3SharedTypeViewHints         Q3_OBJECT_TYPE('v','w','h','n')

Shape Types

#define kQ3ShapeTypeCamera             Q3_OBJECT_TYPE('c','m','r','a')
#define kQ3ShapeTypeGeometry           Q3_OBJECT_TYPE('g','m','t','r')
#define kQ3ShapeTypeGroup              Q3_OBJECT_TYPE('g','r','u','p')
#define kQ3ShapeTypeLight              Q3_OBJECT_TYPE('l','g','h','t')
#define kQ3ShapeTypeShader             Q3_OBJECT_TYPE('s','h','d','r')
#define kQ3ShapeTypeStyle              Q3_OBJECT_TYPE('s','t','y','l')
#define kQ3ShapeTypeTransform          Q3_OBJECT_TYPE('x','f','r','m')
#define kQ3ShapeTypeUnknown            Q3_OBJECT_TYPE('u','n','k','n')

Element Types

#define kQ3ElementTypeAttribute        Q3_OBJECT_TYPE('e','a','t','t')
#define kQ3ElementTypeNone             0
#define kQ3ElementTypeUnknown          32

Set Types

#define kQ3SetTypeAttribute            Q3_OBJECT_TYPE('a','t','t','r')

String Types

#define kQ3StringTypeCString           Q3_OBJECT_TYPE('s','t','r','c')

Method Types

#define kQ3MethodTypeObjectFileVersion Q3_METHOD_TYPE('v','e','r','s')
#define kQ3MethodTypeObjectReadData    Q3_METHOD_TYPE('r','d','d','t')
#define kQ3MethodTypeObjectTraverse    Q3_METHOD_TYPE('t','r','v','s')
#define kQ3MethodTypeObjectUnregister  Q3_METHOD_TYPE('u','n','r','g')
#define kQ3MethodTypeObjectWrite       Q3_METHOD_TYPE('w','r','i','t')
#define kQ3MethodTypeElementCopyAdd    Q3_METHOD_TYPE('e','c','p','a')
#define kQ3MethodTypeElementCopyDuplicateQ3_METHOD_TYPE('e','c','p','d')
#define kQ3MethodTypeElementCopyGet    Q3_METHOD_TYPE('e','c','p','g')
#define kQ3MethodTypeElementCopyReplaceQ3_METHOD_TYPE('e','c','p','r')
#define kQ3MethodTypeElementDelete     Q3_METHOD_TYPE('e','d','e','l')

Data Types

Objects

typedef long                              TQ3ObjectType;
typedef struct TQ3ObjectPrivate           *TQ3Object;
typedef TQ3Object                         TQ3ElementObject;
typedef TQ3Object                         TQ3PickObject;
typedef TQ3Object                         TQ3SharedObject;
typedef TQ3Object                         TQ3ViewObject;

Shared Objects

typedef TQ3SharedObject                   TQ3ControllerStateObject;
typedef TQ3SharedObject                   TQ3DrawContextObject;
typedef TQ3SharedObject                   TQ3FileObject;
typedef TQ3SharedObject                   TQ3ReferenceObject;
typedef TQ3SharedObject                   TQ3RendererObject;
typedef TQ3SharedObject                   TQ3SetObject;
typedef TQ3SharedObject                   TQ3ShapeObject;
typedef TQ3SharedObject                   TQ3ShapePartObject;
typedef TQ3SharedObject                   TQ3StorageObject;
typedef TQ3SharedObject                   TQ3StringObject;
typedef TQ3SharedObject                   TQ3TextureObject;
typedef TQ3SharedObject                   TQ3TrackerObject;
typedef TQ3SharedObject                   TQ3ViewHintsObject;

Sets

typedef TQ3SetObject                      TQ3AttributeSet;
typedef long                              TQ3ElementType;

Shapes

typedef TQ3ShapeObject                    TQ3CameraObject;
typedef TQ3ShapeObject                    TQ3GeometryObject;
typedef TQ3ShapeObject                    TQ3GroupObject;
typedef TQ3ShapeObject                    TQ3LightObject;
typedef TQ3ShapeObject                    TQ3ShaderObject;
typedef TQ3ShapeObject                    TQ3StyleObject;
typedef TQ3ShapeObject                    TQ3TransformObject;
typedef TQ3ShapeObject                    TQ3UnknownObject;

Groups

typedef TQ3GroupObject                    TQ3DisplayGroupObject;

Shaders

typedef TQ3ShaderObject                   TQ3SurfaceShaderObject;
typedef TQ3ShaderObject                   TQ3IlluminationShaderObject;

Other Basic Types

typedef struct TQ3GroupPositionPrivate    *TQ3GroupPosition;
typedef struct TQ3ObjectClassPrivate      *TQ3ObjectClass;
typedef unsigned long                     TQ3MethodType;
typedef void                              (*TQ3FunctionPointer)(void);

QuickDraw 3D Objects Routines

Managing Objects Classes

TQ3Status Q3ObjectClass_Unregister (
TQ3ObjectClass objectClass);

Managing Objects

TQ3Status Q3Object_Dispose(TQ3Object object);
TQ3Object Q3Object_Duplicate(TQ3Object object);
TQ3Object Q3Object_Submit(TQ3Object object, TQ3ViewObject view);
TQ3Boolean Q3Object_IsDrawable(TQ3Object object);
TQ3Boolean Q3Object_IsWritable(TQ3Object object);

Determining Object Types

TQ3ObjectType Q3Object_GetLeafType (
TQ3Object object);
TQ3ObjectType Q3Object_GetType(TQ3Object object);
TQ3Boolean Q3Object_IsType(TQ3Object object, TQ3ObjectType type);

Managing Shared Objects

TQ3SharedObject Q3Shared_GetReference (
TQ3SharedObject sharedObject);
TQ3ObjectType Q3Shared_GetType (
TQ3SharedObject sharedObject);

Registering Custom Elements

TQ3ObjectClass Q3ElementClass_Register (
TQ3ElementType elementType, 
char *name, 
unsigned long sizeOfElement, 
TQ3MetaHandler metaHandler);
TQ3Status Q3ElementType_GetElementSize (
TQ3ElementType elementType, 
unsigned long *sizeOfElement);

Application-Defined Routines

Method Metahandler

typedef TQ3FunctionPointer (*TQ3MetaHandler) (
TQ3MethodType methodType);

Object Methods

typedef TQ3Status (*TQ3ObjectUnregisterMethod) (
TQ3ObjectClass objectClass);

Set Methods

typedef TQ3Status (*TQ3ElementCopyAddMethod) (
const void *fromAPIElement, 
void *toInternalElement);
typedef TQ3Status (*TQ3ElementCopyDuplicateMethod) (
const void *fromInternalElement, 
void *toInternalElement);
typedef TQ3Status (*TQ3ElementCopyGetMethod) (
const void *fromInternalElement, 
void *toAPIElement);
typedef TQ3Status (*TQ3ElementCopyReplaceMethod) (
const void *fromAPIElement, 
void *ontoInternalElement);
typedef TQ3Status (*TQ3ElementDeleteMethod) (
void *internalElement);


Previous Book Contents Book Index Next

© Apple Computer, Inc.
11 JUL 1996